import numpy as np

from 工具.特征.计算多项式函数 import 计算多项式
from 工具.特征.计算正弦函数 import 计算正弦
from 工具.特征.归一化函数 import 归一化


def 训练集预处理(数据, 多项式项数=0, 正弦度数=0, 是否归一化=True):
    样本数 = 数据.shape[0]
    处理的数据 = np.copy(数据)

    # 预处理
    特征均值 = 0
    特征标准差 = 0
    归一化的数据 = 处理的数据

    if 是否归一化:
        (归一化的数据, 特征均值, 特征标准差) = 归一化(处理的数据)

    处理的数据 = 归一化的数据

    if 正弦度数 > 0:
        正弦 = 计算正弦(归一化的数据, 正弦度数)
        处理的数据 = np.concatenate((处理的数据, 正弦), axis=1)

    if 多项式项数 > 0:
        多项式 = 计算多项式(归一化的数据, 多项式项数, 是否归一化)
        处理的数据 = np.concatenate((处理的数据, 多项式), axis=1)

    处理的数据 = np.hstack((np.ones((样本数, 1)), 处理的数据))

    return 处理的数据
